package com.winhc.utils;

import java.io.UnsupportedEncodingException;

import org.apache.commons.codec.digest.DigestUtils;
import org.apache.commons.lang.StringUtils;

/**
 * MD5工具类
 * 
 * @author David.Huang
 */
public class Md5 {

	/** 默认编码方式(UTF-8) */
	public static final String DEFAULT_ENCODE = "utf-8";

	/**
	 * 获得MD5加密后的字符串(默认UTF-8)
	 * 
	 * @param str 加密前的字符串
	 * @return 加密前后字符串
	 */
	public static String md5(String str) {
		return md5(str, DEFAULT_ENCODE);
	}

	/**
	 * 获得MD5加密后的字符串(指定编码方式)
	 * 
	 * @param str 加密前的字符串
	 * @param encoding 编码方式
	 * @return 加密前后字符串
	 * @throws UnsupportedEncodingException 
	 */
	public static String md5(String str, String encoding) {
		try {
			return DigestUtils.md5Hex(str.getBytes(encoding));
		} catch (UnsupportedEncodingException e) {
			return null;
		}
	}

	/**
	 * 获得MD5加密后的字符串(指定编码方式)
	 * 
	 * @param params 加密前的字符串
	 * @return 加密前后字符串
	 * @throws UnsupportedEncodingException 
	 */
	public static String md5(String... params) {
		String s = StringUtils.join(params, "");
		return Md5.md5(s);
	}
	
	/**
	 * 校验Md5结果
	 * @param result md5结果值
	 * @param params 加密参数
	 * @return
	 */
	public static boolean check(String result, String... params){
		return (result != null && result.equals(md5(params)));
	}
	
	public static void main(String[] args) {
		String s = "123456";
		System.out.println( Md5.md5(s) );
	}
}
